На двух прошлых уроках мы с вами посмотрели, как можно динамически создавать компоненты управления. Но у созданных нами кнопок был один недостаток - при нажатии на них ничего не происходило. Давайте сейчас посмотрим, как к созданной динамически кнопке можно добавить (также динамически) код, который будет выполнятся при нажатии на ней.
Возьмите за основу программу из урока 12. Добавьте на её форму компонент ActionList с вкладки Standard:

Для добавления действия в наш компонент ActionList1 сделайте двойной щелчок на нем. Появится окно Editing Form1.ActionList1. Нажмите в нем на кнопку New Action:

В правом списке появится новое действие Action1:

Сделайте на нем двойной щелчок для перехода в окно кода. Добавьте следующие строки:
procedure TForm1.Action1Execute(Sender: TObject);
begin
MessageDlg('Событие для новой кнопки',
mtConfirmation,
[mbOK],
0);
end;
Мы добавили в нашу программу некоторое действие (появление MessageBox'а ). Это действие называется Action1. Теперь свяжем этой действие с нашей кнопкой.
Для этого добавьте в обработчик Button1Click следующую строку:
... btn.Caption:='Новая кнопка'; btn.Action:=Action1; //Создаем новый Edit ...
В этой строке мы связываем свойство Action для кнопки с конкретным событием Action1.
Это свойство присутствует и в Инспекторе объектов. Например, для нашей обычной кнопки Button1 оно выглядит так:

Теперь запускайте программу, нажимайте на кнопку "Дополнительно", потом на нашу динамически созданную кнопку. Появится MessageBox - как мы и задумывали:

Таким образом мы присоединили к динамически созданной кнопке некоторое действие.